package models

import (
	"html/template"
	"time"

	"gitee.com/Yu-eng/Myproject/my-go-blog/config"
)

//这里直接与据库映射相关  数据库内的文章表
type Post struct {
	Pid        int       `orm:"pid" json:"pid"`                // 文章id
	Title      string    `orm:"title" json:"title"`            //文章标题
	Slug       string    `orm:"slug" json:"slug"`              //自定义页面path
	Content    string    `orm:"content" json:"content"`        //文章的html
	Markdown   string    `orm:"markdown" json:"markdown"`      //文章的markdown
	CategoryId int       `orm:"category_id" json:"categoryId"` //分类id
	UserId     int       `orm:"user_id" json:"userId"`         //用户id
	ViewCount  int       `orm:"view_count" json:"viewCount"`   // 查看次数
	Type       int       `orm:"type"  json:"type"`             //文章类型  0 普通 1自定义文章
	CreateAt   time.Time `orm:"create_at" json:"createAt"`     // 创建时间
	UpdateAt   time.Time `orm:"update_at" json:"updateAt"`     //更新时间
}

//这个结构体结构类似post  但是便于在页面上展示出更多的信息
type PostMore struct {
	Pid          int           `json:"pid"`          // 文章id
	Title        string        `json:"title"`        //文章标题
	Slug         string        `json:"slug"`         //自定义页面path
	Content      template.HTML `json:"content"`      //文章的html
	CategoryId   int           `json:"categoryId"`   //文章的markdown
	CategoryName string        `json:"categoryName"` //分类名
	UserId       int           `json:"userId"`       //用户id
	UserName     string        `json:"userName"`     //用户名
	ViewCount    int           `json:"viewCount"`    //查看次数
	Type         int           `json:"type"`         //文章类型 同上
	CreateAt     string        `json:"createAt"`
	UpdateAt     string        `json:"updateAt"`
}

//文章相关的请求包装 ，页面新增 传来的数据 进行封装 当作一个请求参数
type PostReq struct {
	Pid        int    `json:"pid"`
	Title      string `json:"title"`
	Slug       string `json:"slug"`
	Content    string `json:"content"`
	Markdown   string `json:"markdown"`
	CategoryId int    `json:"categoryId"`
	UserId     int    `json:"userId"`
	Type       int    `json:"type"`
}

//搜索相关的数据返回结构
type SearchResp struct {
	Pid   int    `orm:"pid" json:"pid"` //文章id
	Title string `orm:"title" json:"title"`
}

//文章相关的放回信息
type PostRes struct {
	config.Viewer
	config.SystemConfig
	Article PostMore
}

//定义post 的详细信息 点击查看
type PostDetailRes struct {
	config.Viewer
	config.SystemConfig
	//页面属性 评论相关的属性都有了

	Article PostMore
}
